/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-04-13
 * Time: 20:14
 */
public class Main {
    public static void main(String[] args) {
        //示例一：
        String str = "name=zhangsan&age=18";
        // 第一次拆分：按 & 分割字符串，将整个字符串拆分成多个键值对
        String[] result = str.split("&");
        // 结果示例：["name=zhangsan", "age=18"]

        // 遍历每一个键值对片段（如 "name=zhangsan" 和 "age=18"）
        for (String pair : result) {
            // 第二次拆分：按等号分割，且限制最多分割成 2 部分
            // 使用 limit=2 保证值中的等号不会被拆分（例如 "key=val=ue" 会拆分成 ["key", "val=ue"]）
            String[] temp = pair.split("=", 2);
            // 检查拆分后的数组长度是否为 2（确保是合法的键值对）
            if (temp.length == 2) {
                System.out.println(temp[0] + " = " + temp[1]);
               /* temp 是拆分后的字符串数组。
                temp[0] 是第一个元素（键），temp[1] 是第二个元素（值）。
                数组索引从 0 开始：[0] 是第一个位置，[1] 是第二个位置。*/
            } else {
                // 处理格式错误的情况（如缺少等号或值）
                System.out.println("格式错误: " + pair);
            }
        }
            /*输出：
            name = zhangsan
            age = 18*/


        //示例二：
        String input = "name=Alice age=30 country=Canada";

        // 第一次拆分：按空格分割成键值对数组
        String[] keyValuePairs = input.split(" ");
        System.out.println("第一次拆分（键值对）：");
        for (String pair : keyValuePairs) {
            System.out.println(pair);
        }

        // 第二次拆分：将每个键值对按等号分割
        System.out.println("\n第二次拆分（键和值）：");
        for (String pair : keyValuePairs) {
            // 使用 split("=") 分割键和值，limit=2 防止值中有等号
            String[] keyValue = pair.split("=", 2);
            if (keyValue.length == 2) {
                String key = keyValue[0];
                String value = keyValue[1];
                System.out.println("键: " + key + ", 值: " + value);
            }
        }
        /*输出：
        第一次拆分（键值对）：
        name=Alice
        age=30
        country=Canada

        第二次拆分（键和值）：
        键: name, 值: Alice
        键: age, 值: 30
        键: country, 值: Canada*/

        //两次拆分
        String data = "Apples,bananas:pears;Grapes,oranges";
        // 第一次拆分：按逗号分割字符串
        String[] firstSplit = data.split(",");
        System.out.println("第一次拆分结果：");
        for (String s : firstSplit) {
            System.out.println(s);
        }

        // 第二次拆分：对每个子字符串按分号或冒号再次拆分
        System.out.println("\n第二次拆分结果：");
        for (String s : firstSplit) {
            // 使用正则表达式 [;:] 表示按分号或冒号拆分
            String[] secondSplit = s.split("[;:]");
            for (String part : secondSplit) {
                System.out.print(part + " ");
            }
            System.out.println(); // 换行分隔每组结果
        }
       /* 输出：
        第一次拆分结果：
        Apples
        bananas:pears;Grapes
        oranges

        第二次拆分结果：
        Apples
        bananas pears Grapes
        oranges
*/
    }
}